// 数组对象根据传入的属性进行去重
const uniqByProp = (arr, property) => {
  const map = new Map()
  for (const item of arr) {
    if (!map.has(item[property])) map.set(item[property], item)
  }
  return [...map.values()]
}

// 如果是对象数组，property必传；如果是普通数组，property不需要传
export const uniq = (arr = [], property = "") => {
  if (Array.isArray(arr)) {
    if (arr.length) {
      if (Object.prototype.toString.call(arr[0]) === "[object Object]") {
        // 对象数组
        return property ? uniqByProp(arr, property) : arr
      } else {
        // 普通数组
        return [...new Set(arr)]
      }
    } else {
      return []
    }
  } else {
    return []
  }
}
